import React from "react";
import { Tree } from 'antd';
import { DownOutlined,CarryOutOutlined   } from '@ant-design/icons';



const Authority = (props) => {

    let getModule = [];

    console.log("props:",props)

    getModule = JSON.parse(sessionStorage.getItem("getManageModule"))

    let treeDataDemo = [
        {
            title: '所有权限',
            key: 0,
            icon:  <CarryOutOutlined  />,
            children: []
        },
    ];

    const createTreeChildren =(treeDataDemo)=>{
        treeDataDemo.map(item=>{
            let arr = getModule.filter(subItem=>subItem.moduleParentId==item.key)
            if(arr.length==0){
                return
            }
            let treeArr = [];
            for(let i=0;i<arr.length;i++){
                treeArr.push(
                    {
                        key:arr[i].moduleId,
                        title:arr[i].moduleName
                    }
                )
                arr[i].moduleType == "file-d" || arr[i].moduleType == "article-d" || arr[i].moduleType == "page"? treeArr[i].isLeaf = true :  treeArr[i].isLeaf = false
            }
                item.children = treeArr;
            createTreeChildren(treeArr);
            }
        )
    }

    createTreeChildren(treeDataDemo);

    const addAdminTreeArr=()=>{
        let adminModuleArr = JSON.parse(sessionStorage.getItem("getAdminModule"))
        //后台管理层
        let adminTree = [];
        //后台管理的子层
        let featureTree = []

        const module = adminModuleArr.filter(item => item.moduleParentId==0)[0]

        adminModuleArr.map(item=>{
            if(item.moduleParentId!=0){
                if(item.moduleName!=="角色管理" && item.moduleName!=="用户管理" ){
                    featureTree.push({
                        title: item.moduleName,
                        key: item.moduleId,
                        isLeaf: true
                    })
                }
            }
        })

        adminTree = {
            title: module.moduleName,
            key: module.moduleId,
            icon:  <CarryOutOutlined  />,
            children:featureTree
        }
        console.log(adminTree)
        treeDataDemo.push(adminTree)
    }

    const onSelect = (selectedKeys, info) => {
        console.log('selected', selectedKeys, info);
    };

    const onCheck = (checkedKeys, info) => {
        console.log('onCheck', checkedKeys, info);
        props.onChange(checkedKeys)
    };

    if(props.userType=="manager"){
        addAdminTreeArr();
    }


    return (
        // eslint-disable-next-line react/react-in-jsx-scope
        <Tree
            // checkStrictly={true}
            bodyStyle={{
                minHeight: 400
            }}
            showLine
            switcherIcon={<DownOutlined />}
            checkable
            defaultExpandedKeys={props.defaultData}
            // defaultSelectedKeys={props.defaultData}
            defaultCheckedKeys={props.defaultData}
            onSelect={onSelect}
            onCheck={onCheck}
            treeData={treeDataDemo}
        />
    );
};

export default Authority;


// import React from "react";
// import { Tree } from 'antd';
// const treeData = [
//     {
//         title: '所有权限',
//         key: '0-0',
//         children: [
//             {
//                 title: '角色管理',
//                 key: '0-0-0',
//                 // disabled: true,
//                 children: [
//                     {
//                         title: 'leaf',
//                         key: '0-0-0-0',
//                         // disableCheckbox: true,
//                     },
//                     {
//                         title: 'leaf',
//                         key: '0-0-0-1',
//                     },
//                 ],
//             },
//             {
//                 title: '用户权限',
//                 key: '0-0-1',
//                 children: [
//                     {
//                         title: (
//                             <span
//                                 style={{
//                                     color: '#1890ff',
//                                 }}
//                             >
//                                 sss
//                             </span>
//                         ),
//                         key: '0-0-1-0',
//                     },
//                 ],
//             },
//             {
//                 title: '模块管理',
//                 key: '0-0-2',
//                 // disabled: true,
//                 children: [
//                     {
//                         title: 'leaf',
//                         key: '0-0-0-2',
//                         disableCheckbox: true,
//                     },
//                     {
//                         title: 'leaf',
//                         key: '0-0-0-3',
//                     },
//                 ],
//             },
//             {
//                 title: '首页管理',
//                 key: '0-0-3',
//                 // disabled: true,
//                 children: [
//                     {
//                         title: 'leaf',
//                         key: '0-0-0-4',
//                         disableCheckbox: true,
//                     },
//                     {
//                         title: 'leaf',
//                         key: '0-0-0-5',
//                     },
//                 ],
//             },
//             {
//                 title: '日志查询',
//                 key: '0-0-4',
//                 // disabled: true,
//                 children: [
//                     {
//                         title: 'leaf',
//                         key: '0-0-0-6',
//                         disableCheckbox: true,
//                     },
//                     {
//                         title: 'leaf',
//                         key: '0-0-0-7',
//                     },
//                 ],
//             },
//         ],
//     },
// ];
//
// const x = 3;
// const y = 2;
// const z = 1;
// const gData = [];
//
// const Authority = (_level, _preKey, _tns) => {
//     const preKey = _preKey || '0';
//     const tns = _tns || gData;
//
//     const children = [];
//     for (let i = 0; i < x; i++) {
//         const key = `${preKey}-${i}`;
//         tns.push({ title: key, key });
//         if (i < y) {
//             children.push(key);
//         }
//     }
//     if (_level < 0) {
//         return tns;
//     }
//     const level = _level - 1;
//     children.forEach((key, index) => {
//         tns[index].children = [];
//         return Authority(level, key, tns[index].children);
//     });
// };
// Authority(z);
//
// export default class Demo extends React.Component {
//     state = {
//         gData,
//         expandedKeys: ['0-0', '0-0-0', '0-0-0-0'],
//     };
//
//     onSelect = (selectedKeys, info) => {
//         console.log('selected', selectedKeys, info);
//     };
//
//     onDragEnter = info => {
//         console.log(info);
//         // expandedKeys 需要受控时设置
//         // this.setState({
//         //   expandedKeys: info.expandedKeys,
//         // });
//     };
//
//     onDrop = info => {
//         console.log(info);
//         const dropKey = info.node.props.eventKey;
//         const dragKey = info.dragNode.props.eventKey;
//         const dropPos = info.node.props.pos.split('-');
//         const dropPosition = info.dropPosition - Number(dropPos[dropPos.length - 1]);
//
//         const loop = (data, key, callback) => {
//             for (let i = 0; i < data.length; i++) {
//                 if (data[i].key === key) {
//                     return callback(data[i], i, data);
//                 }
//                 if (data[i].children) {
//                     loop(data[i].children, key, callback);
//                 }
//             }
//         };
//         const data = [...this.state.gData];
//
//         // Find dragObject
//         let dragObj;
//         loop(data, dragKey, (item, index, arr) => {
//             arr.splice(index, 1);
//             dragObj = item;
//         });
//
//         if (!info.dropToGap) {
//             // Drop on the content
//             loop(data, dropKey, item => {
//                 item.children = item.children || [];
//                 // where to insert 示例添加到尾部，可以是随意位置
//                 item.children.push(dragObj);
//             });
//         } else if (
//             (info.node.props.children || []).length > 0 && // Has children
//             info.node.props.expanded && // Is expanded
//             dropPosition === 1 // On the bottom gap
//         ) {
//             loop(data, dropKey, item => {
//                 item.children = item.children || [];
//                 // where to insert 示例添加到头部，可以是随意位置
//                 item.children.unshift(dragObj);
//             });
//         } else {
//             let ar;
//             let i;
//             loop(data, dropKey, (item, index, arr) => {
//                 ar = arr;
//                 i = index;
//             });
//             if (dropPosition === -1) {
//                 ar.splice(i, 0, dragObj);
//             } else {
//                 ar.splice(i + 1, 0, dragObj);
//             }
//         }
//
//         this.setState({
//             gData: data,
//         });
//     };
//     render() {
//         return (
//             <Tree
//                 className="draggable-tree"
//                 defaultExpandedKeys={this.state.expandedKeys}
//                 draggable
//                 blockNode
//                 onSelect={this.onSelect}
//                 onDragEnter={this.onDragEnter}
//                 onDrop={this.onDrop}
//                 treeData={this.state.gData}
//             />
//         );
//     }
// }




